package com.moli.iov.admin.service;

import com.moli.iov.admin.model.vo.req.RoleVo;
import com.moli.iov.model.dto.req.PageExtend;
import com.moli.iov.rest.RestResponse;
import com.moli.iov.sys.model.dto.req.RolePermissionDto;
import com.moli.iov.sys.model.po.Role;
import java.util.List;

/**
 * <p>
 * 角色管理
 * </p>
 *
 * @author zql
 * @since 2019/9/6 16:33
 */
public interface IRoleFacadeService {

  /**
   *
   * 查询角色列表
   *
   * @param roleVo
   * @return
   */
  RestResponse<List<Role>> listRole(RoleVo roleVo);

  /**
   *
   * 分页查询角色列表
   *
   * @param roleVo
   * @return
   */
  RestResponse<PageExtend<Role>> listRoleOfPage(RoleVo roleVo);

  /**
   * 增加角色
   * @param roleVo
   * @return
   */
  RestResponse saveRole(RoleVo roleVo);

  /**
   * 修改角色
   * @param roleVo
   * @return
   */
  RestResponse updateRoleByRoleId(RoleVo roleVo);

  /**
   * 设置权限
   * @param roleVo
   * @return
   */
  RestResponse setPermission(RoleVo roleVo);

  /**
   * 权限详情
   * @param roleVo
   * @return
   */
  RestResponse<RolePermissionDto> getRolePermissions(RoleVo roleVo);

  /**
   * 修改权限清空登录api权限缓存
   * @param roleId
   */
  void removeApiPermissions(Long roleId);

  /**
   * 根据用户Id查询角色列表
   * @param roleVo
   * @return
   */
  RestResponse<List<Role>> listRolesByUserId(RoleVo roleVo);
}
